package demo.pattern.factory.simple;

import demo.pattern.factory.entity.DellMouse;
import demo.pattern.factory.entity.HpMouse;
import demo.pattern.factory.entity.Mouse;

/**
 * @Author: yu.zhou
 * @DateTime: 2023/01/03 15:01 简单工厂模式demo
 * <p>
 * 使用场景: 1.创建的对象比较少的情况 2.客户端不需要关心对象的创建过程
 * <p>
 * 优点:可以对创建的对象进行"加工",对客户端隐藏相关细节
 * <p>
 * 缺点:因创建过多对象照成的代码臃肿,并且违背了开闭原则(扩展开放,修改关闭)
 */
public class MouseFactory {

    public static Mouse createMouse(int type) {
        switch (type) {
            case 0:
                return new DellMouse();
            case 1:
                return new HpMouse();
            default:
                return null;
        }
    }

    public static void main(String[] args) {
        createMouse(1).sayHi();
    }

}
